前一篇介紹了傳遞使用者資料手段之一session
,這一篇再接續介紹另一個是傳遞使用者資料的另一個手段,這裡不多講cookie
的細部知識,有興趣的可以看一下Cookie Wiki,本篇著重於在 iris 如何使用 cookie
所以接下來進入本文內容。
本文同步放置於此
這裡主要是說明在 iris 內如何存取 cookie
,所以以下分三個部份來跟大家介紹 iris 的 cookie
,那三個部份分別是如何設定 cookie
、如何取得cookie
和如何將cookie
加解密,首先先介紹如何設定cookie
開始。
iris 的設定有兩種方式,一種是SetCookie
例外一種是UpsertCookie
相信有些開發基礎的讀者們看到這兩個方法名稱就知道其差別是甚麼了,第一個SetCookie
僅是設定cookie
而UpsertCookie
則是若是cookie
存在實則為將其值更新為設定的值,若不存在則新增。
但是除了上述兩個方法之外還有一個常用的方法SetCookieKV
,這個方法跟前面幾個方法的差別是甚麼呢,主要是透過Key
與Value
的方式來修改cookie
內對應Key
的ˋ值。他的使用方法如下列例子
SetCookieKV(name, value string, options ...CookieOption)
這邊有地方要注意的是,沒有特別設定的存續期間是365天,如果要更改存續期間則在options
用以下方法設定
iris.CookieExpires(durFromNow time.Duration) CookieOption
相對於cookie
的設定,他的取得相對簡單,請看下列例子
GetCookie(name string, options ...CookieOption) string
有時會有需要將特定的cookie
給刪除的狀況,這時候就要使用下列的方式來進行刪除的動作
RemoveCookie(name string, options ...CookieOption)
在處理完新增、刪除與修改cookie
後,接下來要補充的是針對cookie
加解密,因為有時候存放一些不希望讓使用者知道的資料,所以要針對他做加密,所以加解密的方法如下
var (
hashKey = securecookie.GenerateRandomKey(64)
blockKey = securecookie.GenerateRandomKey(32)
s = securecookie.New(hashKey, blockKey)
)
上述例子是先生成一組加密用密鑰s
,接下來就透過下列方法進行加密
// iris.CookieEncode(encode CookieEncoder) CookieOption
ctx.SetCookieKV(name, value, iris.CookieEncode(s))
然而解密的方法就如下所示
// iris.CookieDecode(decode CookieDecoder) CookieOption
ctx.GetCookie(name, iris.CookieDecode(s))
本篇介紹傳遞使用者資訊的手段之一的cookie
,其中包含他的存取以及刪除還有對他加解密。